package com.maimang.platform.crm.entity;

import com.maimang.platform.base.BaseEntity;
import com.maimang.platform.lang.StringUtils;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author Rocky
 * @version 1.0.0
 * @classname WorkTreeNode
 * @description <br>树节点</br>
 * @date 2019-10-11 14:20
 * @email jintaozhao@qq.com
 */
@Data
public class WorkTreeNode extends BaseEntity {

	private static final long serialVersionUID = 1L;

	private Long userId;

	private String userName;

	/**
	 * 部门id
	 */
	private Long deptId;

	/**
	 * 部门父id
	 */
	private Long parentId;

	/**
	 * 部门名称
	 */
	private String deptName;

	/**
	 * 父部门名称
	 */
	private String parentDeptName;

	/**
	 * 员工工号
	 */
	private String jobNumber;

	/**
	 * 工作类型 : 电话
	 */
	private int call = 0;
	/**
	 * 工作类型 ：拜访
	 */
	private int visit = 0;

	/**
	 * 二次拜访
	 */
	private int visit2 = 0;
	/**
	 * 三次拜访
	 */
	private int visit3 = 0;
	/**
	 * 四次拜访
	 */
	private int visit4 = 0;
	/**
	 * 工作类型 ：提案
	 */
	private int solution = 0;
	/**
	 * 工作类型 3-签约
	 */
	private int sign = 0;
	/**
	 * 统计维度：周 week 月 month 季 quarter 年 year
	 */
	private String type;

	/**
	 * 统计时间：几月，第几周，哪年，哪个季度
	 */
	private String time = StringUtils.EMPTY;

	/**
	 * 统计起始时间
	 */
	private Date startDate;

	/**
	 * 统计结束时间
	 */
	private Date endDate;

	/**
	 * 下级节点
	 */
	private List<WorkTreeNode> children;

	/**
	 * 设置分组的key，这里就是把你想要分组的key拼起来,可以选择一个或多个属性拼接
	 *
	 * @return groupKey
	 */
	public String groupKey() {
		return StringUtils.isEmpty(this.time) ? this.userName : this.time;
	}

	@Override
	public boolean equals(Object obj) {
		WorkTreeNode workTreeNode = (WorkTreeNode) obj;
		if (StringUtils.isNotNull(userId))
			return deptId.equals(workTreeNode.deptId) && deptName.equals(workTreeNode.deptName) && userId.equals(workTreeNode.userId) && time.equals(workTreeNode.time);
		else
			return deptId.equals(workTreeNode.deptId) && deptName.equals(workTreeNode.deptName) && time.equals(workTreeNode.time);
	}

	@Override
	public int hashCode() {
		String code = deptId + deptName + userId;
		return code.hashCode();
	}

}